"""全局变量"""

#在Python中，在函数外部或全局范围内声明的变量称为全局变量。这意味着可以在函数内部或外部访问全局变量。
#让我们看一下如何在Python中创建全局变量的示例。

x = "global"

def foo():
 print("内部 x:", x)

foo()
print("外部 x:", x)

#在上面的代码中，我们将x创建为全局变量，并定义了foo()来打印全局变量x。最后，我们调用foo()将打印x值的。

"""局部变量"""

#在函数体内或局部范围内声明的变量称为局部变量。

def foo():
 y = "local"
 print(y)

foo()

"""全局和局部变量"""

x = "global"

def foo():
 global x
 y = "local"
 x = x * 2
 print(x)
 print(y)
 
foo()

#在上面的代码中，我们将x声明为全局变量，将y声明为foo()中的局部变量。然后，我们使用乘法运算符*来修改全局变量x，并同时输出x和y。
#在调用foo()之后，x的值就变成了global global，因为我们使用x * 2来打印两次global。然后，我们打印局部变量y的值，即局部变量。

"""非局部变量"""

#非局部变量用于未定义局部作用域的嵌套函数。这意味着该变量既不能在局部范围内，也不能在全局范围内。
#让我们看一下如何在Python中创建全局变量的示例。
#我们使用nonlocal关键字创建非局部变量。

def outer():
 x = "local"
 
 def inner():
   nonlocal x
   x = "nonlocal"
   print("inner:", x)
 
 inner()
 print("outer:", x)

outer()

#在上面的代码中，有一个嵌套函数inner()。 我们使用nonlocal关键字创建一个非局部变量。  inner()函数在另一个函数external()的范围内定义。
#注意：如果我们改变了非局部变量的值，这些改变就会出现在局部变量中。